home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / opengl / xorg-x11 / include / glx.h < prev    next >
C/C++ Source or Header  |  2006-04-12  |  9KB  |  227 lines

  1. #ifndef __GLX_glx_h__
  2. #define __GLX_glx_h__
  3.  
  4. /* $XFree86: xc/include/GL/glx.h,v 1.10 2002/10/30 08:52:36 alanh Exp $ */
  5. /*
  6. ** License Applicability. Except to the extent portions of this file are
  7. ** made subject to an alternative license as permitted in the SGI Free
  8. ** Software License B, Version 1.1 (the "License"), the contents of this
  9. ** file are subject only to the provisions of the License. You may not use
  10. ** this file except in compliance with the License. You may obtain a copy
  11. ** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
  12. ** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
  13. ** 
  14. ** http://oss.sgi.com/projects/FreeB
  15. ** 
  16. ** Note that, as provided in the License, the Software is distributed on an
  17. ** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
  18. ** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
  19. ** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
  20. ** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
  21. ** 
  22. ** Original Code. The Original Code is: OpenGL Sample Implementation,
  23. ** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
  24. ** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
  25. ** Copyright in any portions created by third parties is as indicated
  26. ** elsewhere herein. All Rights Reserved.
  27. ** 
  28. ** Additional Notice Provisions: The application programming interfaces
  29. ** established by SGI in conjunction with the Original Code are The
  30. ** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
  31. ** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
  32. ** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
  33. ** Window System(R) (Version 1.3), released October 19, 1998. This software
  34. ** was created using the OpenGL(R) version 1.2.1 Sample Implementation
  35. ** published by SGI, but has not been independently verified as being
  36. ** compliant with the OpenGL(R) version 1.2.1 Specification.
  37. */
  38.  
  39. #include <X11/Xlib.h>
  40. #include <X11/Xutil.h>
  41. #include <GL/gl.h>
  42. #include <GL/glxtokens.h>
  43.  
  44. #ifdef __cplusplus
  45. extern "C" {
  46. #endif
  47.  
  48. /*
  49. ** GLX resources.
  50. */
  51. typedef XID GLXContextID;
  52. typedef XID GLXPixmap;
  53. typedef XID GLXDrawable;
  54. typedef XID GLXPbuffer;
  55. typedef XID GLXWindow;
  56. typedef XID GLXFBConfigID;
  57.  
  58. /*
  59. ** GLXContext is a pointer to opaque data.
  60. */
  61. typedef struct __GLXcontextRec *GLXContext;
  62.  
  63. /*
  64. ** GLXFBConfig is a pointer to opaque data.
  65. */
  66. typedef struct __GLXFBConfigRec *GLXFBConfig;
  67.  
  68. /************************************************************************/
  69.  
  70. extern XVisualInfo* glXChooseVisual (Display *dpy, int screen, int *attribList);
  71. extern void glXCopyContext (Display *dpy, GLXContext src, GLXContext dst, unsigned long mask);
  72. extern GLXContext glXCreateContext (Display *dpy, XVisualInfo *vis, GLXContext shareList, Bool direct);
  73. extern GLXPixmap glXCreateGLXPixmap (Display *dpy, XVisualInfo *vis, Pixmap pixmap);
  74. extern void glXDestroyContext (Display *dpy, GLXContext ctx);
  75. extern void glXDestroyGLXPixmap (Display *dpy, GLXPixmap pix);
  76. extern int glXGetConfig (Display *dpy, XVisualInfo *vis, int attrib, int *value);
  77. extern GLXContext glXGetCurrentContext (void);
  78. extern GLXDrawable glXGetCurrentDrawable (void);
  79. extern Bool glXIsDirect (Display *dpy, GLXContext ctx);
  80. extern Bool glXMakeCurrent (Display *dpy, GLXDrawable drawable, GLXContext ctx);
  81. extern Bool glXQueryExtension (Display *dpy, int *errorBase, int *eventBase);
  82. extern Bool glXQueryVersion (Display *dpy, int *major, int *minor);
  83. extern void glXSwapBuffers (Display *dpy, GLXDrawable drawable);
  84. extern void glXUseXFont (Font font, int first, int count, int listBase);
  85. extern void glXWaitGL (void);
  86. extern void glXWaitX (void);
  87. extern const char * glXGetClientString (Display *dpy, int name );
  88. extern const char * glXQueryServerString (Display *dpy, int screen, int name );
  89. extern const char * glXQueryExtensionsString (Display *dpy, int screen );
  90.  
  91. /* New for GLX 1.3 */
  92. extern GLXFBConfig * glXGetFBConfigs (Display *dpy, int screen, int *nelements);
  93. extern GLXFBConfig * glXChooseFBConfig (Display *dpy, int screen, const int *attrib_list, int *nelements);
  94. extern int glXGetFBConfigAttrib (Display *dpy, GLXFBConfig config, int attribute, int *value);
  95. extern XVisualInfo * glXGetVisualFromFBConfig (Display *dpy, GLXFBConfig config);
  96. extern GLXWindow glXCreateWindow (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list);
  97. extern void glXDestroyWindow (Display *dpy, GLXWindow win);
  98. extern GLXPixmap glXCreatePixmap (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list);
  99. extern void glXDestroyPixmap (Display *dpy, GLXPixmap pixmap);
  100. extern GLXPbuffer glXCreatePbuffer (Display *dpy, GLXFBConfig config, const int *attrib_list);
  101. extern void glXDestroyPbuffer (Display *dpy, GLXPbuffer pbuf);
  102. extern void glXQueryDrawable (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value);
  103. extern GLXContext glXCreateNewContext (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct);
  104. extern Bool glXMakeContextCurrent (Display *display, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
  105. extern GLXDrawable glXGetCurrentReadDrawable (void);
  106. extern Display * glXGetCurrentDisplay (void);
  107. extern int glXQueryContext (Display *dpy, GLXContext ctx, int attribute, int *value);
  108. extern void glXSelectEvent (Display *dpy, GLXDrawable draw, unsigned long event_mask);
  109. extern void glXGetSelectedEvent (Display *dpy, GLXDrawable draw, unsigned long *event_mask);
  110.  
  111. /* GLX 1.4 and later */
  112. extern void (*glXGetProcAddress(const GLubyte *procname))(void);
  113.  
  114.  
  115. #ifndef GLX_GLXEXT_LEGACY
  116.  
  117. #include <GL/glxext.h>
  118.  
  119. #else
  120.  
  121. /* GLX extensions */
  122. #define GLX_EXT_import_context    1
  123. #define GLX_EXT_visual_info    1
  124. #define GLX_EXT_visual_rating    1
  125. #define GLX_ARB_get_proc_address 1
  126. extern GLXContextID glXGetContextIDEXT (const GLXContext ctx);
  127. extern GLXContext glXImportContextEXT (Display *dpy, GLXContextID contextID);
  128. extern void glXFreeContextEXT (Display *dpy, GLXContext ctx);
  129. extern int glXQueryContextInfoEXT (Display *dpy, GLXContext ctx, int attribute, int *value);
  130. extern Display * glXGetCurrentDisplayEXT (void);
  131. extern void (*glXGetProcAddressARB(const GLubyte *procName))( void );
  132.  
  133.  
  134.  
  135. #endif /* GLX_GLXEXT_LEGACY */
  136.  
  137.  
  138. /**
  139.  ** The following aren't in glxext.h yet.
  140.  **/
  141.  
  142.  
  143. /*
  144.  * ???. GLX_NV_vertex_array_range
  145.  */
  146. #ifndef GLX_NV_vertex_array_range
  147. #define GLX_NV_vertex_array_range
  148.  
  149. extern void *glXAllocateMemoryNV(GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
  150. extern void glXFreeMemoryNV(GLvoid *pointer);
  151. typedef void * ( * PFNGLXALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
  152. typedef void ( * PFNGLXFREEMEMORYNVPROC) (GLvoid *pointer);
  153.  
  154. #endif /* GLX_NV_vertex_array_range */
  155.  
  156.  
  157.  
  158. /*
  159.  * ???. GLX_MESA_agp_offset (deprecated)
  160.  */ 
  161. #ifndef GLX_MESA_agp_offset
  162. #define GLX_MESA_agp_offset 1
  163.  
  164. extern GLuint glXGetAGPOffsetMESA(const GLvoid *pointer);
  165. typedef GLuint (* PFNGLXGETAGPOFFSETMESAPROC) (const GLvoid *pointer);
  166.  
  167. #endif /* GLX_MESA_agp_offset */
  168.  
  169.  
  170. /*
  171.  * ???. GLX_MESA_allocate_memory
  172.  */ 
  173. #ifndef GLX_MESA_allocate_memory
  174. #define GLX_MESA_allocate_memory 1
  175.  
  176. extern void *glXAllocateMemoryMESA(Display *dpy, int scrn, size_t size, float readfreq, float writefreq, float priority);
  177. extern void glXFreeMemoryMESA(Display *dpy, int scrn, void *pointer);
  178. extern GLuint glXGetMemoryOffsetMESA(Display *dpy, int scrn, const void *pointer);
  179. typedef void * ( * PFNGLXALLOCATEMEMORYMESAPROC) (Display *dpy, int scrn, size_t size, float readfreq, float writefreq, float priority);
  180. typedef void ( * PFNGLXFREEMEMORYMESAPROC) (Display *dpy, int scrn, void *pointer);
  181. typedef GLuint (* PFNGLXGETMEMORYOFFSETMESAPROC) (Display *dpy, int scrn, const void *pointer);
  182.  
  183. #endif /* GLX_MESA_allocate_memory */
  184.  
  185. /*
  186.  * ???. GLX_ARB_render_texture
  187.  */
  188. #ifndef GLX_ARB_render_texture
  189. #define GLX_ARB_render_texture 1
  190.  
  191. Bool glXBindTexImageARB( Display *dpy, GLXPbuffer pbuffer, int buffer );
  192. Bool glXReleaseTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer );
  193. Bool glXDrawableAttribARB( Display *dpy, GLXDrawable draw, const int *attribList );
  194.  
  195. #endif
  196.  
  197.  
  198.  
  199. /*** Should these go here, or in another header? */
  200. /*
  201. ** GLX Events
  202. */
  203. typedef struct {
  204.     int event_type;        /* GLX_DAMAGED or GLX_SAVED */
  205.     int draw_type;        /* GLX_WINDOW or GLX_PBUFFER */
  206.     unsigned long serial;    /* # of last request processed by server */
  207.     Bool send_event;        /* true if this came for SendEvent request */
  208.     Display *display;        /* display the event was read from */
  209.     GLXDrawable drawable;    /* XID of Drawable */
  210.     unsigned int buffer_mask;    /* mask indicating which buffers are affected */
  211.     unsigned int aux_buffer;    /* which aux buffer was affected */
  212.     int x, y;
  213.     int width, height;
  214.     int count;            /* if nonzero, at least this many more */
  215. } GLXPbufferClobberEvent;
  216.  
  217. typedef union __GLXEvent {
  218.     GLXPbufferClobberEvent glxpbufferclobber;
  219.     long pad[24];
  220. } GLXEvent;
  221.  
  222. #ifdef __cplusplus
  223. }
  224. #endif
  225.  
  226. #endif /* !__GLX_glx_h__ */
  227.